WebRTC媒体协商精讲

📚 共计 30 章节
01
媒体协商基础
SDP协议概述 · SDP结构解析 · Offer/Answer模型原理
SDPOffer/Answer
02
创建Offer
RTCPeerConnection · createOffer · offerToReceiveAudio/Video
API媒体选项
03
设置本地描述
setLocalDescription · 本地SDP状态机 · ICE角色与候选者收集
本地SDPICE
04
信令传输
信令服务器作用 · WebSocket信令 · Offer/Answer信令流程
信令WebSocket
05
接收Answer
setRemoteDescription · 远程SDP解析 · 媒体轨道与Transceiver
远程SDP收发器
06
ICE候选者交换
ICE协议 · host/srflx/relay · 优先级排序 · Trickle ICE
ICE候选者
07
ICE连接状态机
ICE状态 · 状态回调 · 连接超时处理
状态机超时
08
DTLS与SRTP
DTLS握手 · SRTP密钥派生 · 媒体加密与安全协商
DTLSSRTP
09
编解码器协商
RTCRtpCodecCapability · 优先级排序 · H264/VP8/VP9/AV1
编解码SDP参数
10
RTP头扩展与SSRC
SSRC作用与冲突 · 头扩展协商 · abs-send-time/twcc
RTP头扩展
11
收发器(Transceiver)机制
RTCRtpTransceiver · addTrack vs addTransceiver · 方向属性
Transceiver方向
12
Simulcast与SVC
Simulcast SDP · SVC SDP · 码率分配策略
SimulcastSVC
13
BUNDLE机制
BUNDLE组 · Transport CC · 减少ICE连接数
BUNDLE复用
14
RTCP-MUX与复用
RTCP-MUX标记 · 减少端口占用
RTCPMUX
15
SSRC属性与RID
RID定义 · Simulcast流标识 · a=rid行解析
RIDSSRC
16
媒体协商中的Extmap
Extmap URI · 一对一映射 · 自定义头扩展
Extmap映射
17
Plan B与Unified Plan
两种方案区别 · Unified Plan m=行 · 浏览器兼容性
Plan BUnified Plan
18
重协商(Re-negotiation)
触发场景 · setLocalDescription再次调用 · 动态轨道
重协商动态
19
Rollback机制
SDP回滚 · createOffer失败恢复 · setLocalDescription('rollback')
回滚恢复
20
ICE重启(ICE Restart)
触发 · 新ufrag/pwd · 媒体流不中断切换
ICE重启切换
21
数据通道协商
SCTP over DTLS · DataChannel SDP · 有序/无序
DataChannelSCTP
22
媒体协商中的SSRC属性
a=ssrc行 · CNAME · MSID与流关联
SSRCCNAME
23
MSID机制
MediaStream ID · 多流轨道归属 · a=msid行
MSID流标识
24
Group属性与FID/FEC
a=group:BUNDLE · a=group:FID-FEC · 前向纠错SDP
GroupFEC
25
RTP映射与Payload Type
动态/静态PT · a=rtpmap · a=fmtp参数
Payload映射
26
媒体协商中的Crypto
a=crypto(SDES) · DTLS指纹 · 安全策略选择
加密指纹
27
ICE候选者优先级算法
候选者对优先级 · 类型优先级 · RFC 5245算法
优先级算法
28
ICE提名(Nomination)机制
常规/激进提名 · 提名与ICE完成 · 冲突处理
提名ICE
29
ICE与STUN/TURN
STUN Binding · TURN分配 · 中继候选者协商
STUNTURN
30
媒体协商调试与排错
常见SDP错误 · 日志分析 · Wireshark抓包
调试Wireshark